1. Field of the Invention
The present invention relates to a method and apparatus for controlling the authenticity of application programs received from unsecured storage and for controlling data access by such programs as they run in a secure environment in a computer in order to preserve system security.
2. Description of Related Art
The use of apparatus and programmed methods to prevent application programs from accessing or modifying protected areas of storage in a data processing system are known in the operating system art. Examples are the U.S. Pat. Nos. 5,144,659 and 5,289,540 to Richard P. Jones. Jones discloses hardware in the form of a programmable auxiliary memory and control unit on a disk drive adapter card which intercepts the control logic, address, and data signal paths between the central processing unit and the file storage. Once the hardware and associated software of the Jones system is installed, the operating system no longer controls or has access to the file system. In Jones, the auxiliary memory stores signatures of all valid files. The file signatures are simple cyclic redundancy code (CRC). Such signatures can protect against virus attack by detecting that the file has been changed by a virus since the CRC was last calculated. Such signature can not protect against hacker attack because it is a simple matter to calculate and append a new CRC after changing a program.
More recently, the hardware central processing unit (CPU) itself has privilege levels built in that protect memory segments having a level zero for example from being directly addressed by application programs running at level 3. An example appears in the Am486 Microprocessor Software Users Manual published January 1994 by Advanced Micro Devices at pages A-28 through A-34. Although these circuits prevent direct addressing of supervisor level memory space by level 3 application programs, there will be times when such access is necessary and there is no mechanism in the microprocessor for determining that the application program is authentic and that the data to be accessed is allocated to the authentic program.
The use of encryption to verify the identity of users and the authenticity of programs or ID Cards is known. An example of such art is the IBM 4755 cryptographic adapter card. The teaching of the current art do not however show how to protect persistent data in a secure area when applications are loaded from non-secure sources.
In computer systems that run multiple application programs, and have the ability to store long-term data for those programs, there is a need to protect each data area from application programs other than the one which created that area. The term "other programs" is meant to include both entirely different programs, and programs which may attempt to masquerade as the program that created the data. New versions of any program, however, must be able to access the data areas created by the earlier versions of that same program.
In this particular scenario, the data is persistent in computer memory, while the application programs themselves are not. The application programs are deleted from memory when they are no longer needed, and then they are reloaded at a later time when their services are again required. The data areas used by each application program remain in the computer, stored on a persistent medium and managed by the computer's operating system. When an application program is reloaded, it must be given access to the data which it owns, but it must not be permitted to access data owned by another application program. In like manner, application programs that are operating concurrently must not be able to access each others data. The program storage medium itself from which application programs are reloaded is not necessarily protected in any way, so the application programs must be structured so that they carry their own protection from alteration, and so that they contain protected information that can be used to securely associate them with the data areas that they own.